iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
生成式 AI

LLM 應用、開發框架、RAG優化及評估方法 系列 第 23

Day23 GAI爆炸時代 - RAG 介紹

  • 分享至 

  • xImage
  •  

RAG (Retrieval-Augmented Generation,檢索增強生成)

是一種將檢索與生成結合的技術,用於增強生成模型的能力,特別是在需要從大量資料中檢索相關資訊並生成高質量文本的情境下。

RAG 的核心概念

  1. 檢索 (Retrieval):
    在這個步驟中,系統會根據用戶的查詢(query)從資料庫或知識庫中檢索出與查詢最相關的文檔或片段。這通常涉及到使用向量搜索技術,將查詢和文檔表示為向量,並根據相似度找到相關的內容。

  2. 生成 (Generation):
    接著,生成模型(如 GPT 系列模型)會基於檢索到的文檔生成最終的回答或文本內容。這個步驟的生成模型會將檢索到的文檔作為上下文來生成更準確和相關的回答,而非僅僅依賴預先訓練的模型權重來生成。

RAG 的運作過程

  1. 查詢輸入 (Query Input):
    用戶提出一個查詢,這個查詢可能是問題、指令或需要生成內容的請求。

  2. 檢索階段 (Retrieval Phase):
    查詢被轉換成向量形式,然後系統會在資料庫中進行向量搜索,找到與查詢最相似的文檔片段。

  3. 生成階段 (Generation Phase):
    系統將檢索到的相關文檔提供給生成模型,生成模型基於這些文檔進行上下文理解,並生成符合用戶需求的文本內容。

RAG 的應用場景

  • 問答系統: RAG 可用於建立智能問答系統,特別是當資料庫包含大量文檔時,它能檢索相關文檔來生成精確的回答。

  • 內容生成: 在需要創建長篇文本(如報告、文章)且需要基於現有資料生成新內容時,RAG 能夠提供上下文相關的資訊來豐富內容。

  • 聊天機器人: RAG 能夠提高聊天機器人的應答準確度,因為它可以根據用戶的對話上下文檢索相關信息,並生成更自然和相關的回應。

RAG 的優勢

  1. 上下文相關性強: RAG 結合了檢索和生成的優點,生成的文本更貼近用戶需求,因為生成過程中考慮到了相關文檔內容。

  2. 可應用於未見過的知識: 由於檢索階段可以獲取實時資料,RAG 系統可以更好地應對涉及未見過的新知識或資料的查詢。

  3. 靈活性: RAG 可以適應不同類型的數據源,無論是結構化還是非結構化的資料,這使得它在多種應用場景下都非常有效。

RAG 的挑戰

  • 檢索系統的效率: 檢索系統需要在大規模資料集中高效找到相關文檔,這對系統的性能要求較高。

  • 生成模型的準確性: 儘管 RAG 能夠增強生成模型的表現,但生成模型仍可能出現理解錯誤或生成不符合上下文的內容。

總結

RAG 是一種將檢索技術與生成技術結合的創新方法,通過檢索相關的文檔並基於這些文檔生成回答或文本,能夠在多種應用中提供更加精確和相關的內容。RAG 在問答系統、內容生成和聊天機器人等領域具有廣泛的應用前景,並且在處理大規模知識庫時展現了優異的表現。

我們將根據此篇論文,去介紹幾種RAG的方法
Retrieval-Augmented Generation for Large Language Models: A Survey

image

1. Naive RAG:

image

主要分成三個部分:

  1. Indexing (索引)
  2. Retrieval (檢索)
  3. Generation (生成)

Steps:

  1. Indexing
  • 文件處理: 先將文檔進行處理分割成許多chunks(小塊)
  • 向量化: 將chunks 編碼成向量(embeddings),並儲存在向量數據庫中,可增強後續進行相似檢所的效率
  1. Retrieval
  • 問題查詢: 用戶輸入問題
  • 相關文獻檢索: 系統會使用user的query 與從vector database中檢索出與問題最相關的K個chunks 進行similarity 計算
  1. Generation
  • 合成提示: 將原始問題和retrieval 到的相關chunks作為上下文一同輸入到LLM中
  • 回答生成: LLM再根據這些上下文生成出最終的答案
有RAG 無RAG
LLM可以提供更詳細和準確的回答,因為它整合了外部的相關知識 LLM可能無法提供有用的回答,因為它缺乏最新的、相關的信息

2. Advanced RAG

克服 Naive RAG 的局限性。它主要聚焦於提升檢索質量,並採用了預檢索和後檢索策略

1. 預檢索過程(Pre-retrieval Process)

1. 索引優化(Index Optimization):

在預檢索過程中,主要目標是優化索引結構和原始查詢

  1. 數據粒度(Data Granularity):提高數據的細粒度,使索引內容更具體和詳盡。
  2. 優化索引結構(Optimizing Index Structures):使用Sliding Window和Fine-Grained Segmentation(細粒度分割)技術來生成更高質量的索引。
  3. 元數據附加(Adding Metadata):在文檔片段中添加元數據,如頁碼、文件名、作者等,以便在檢索時能夠更精確地篩選出相關內容。
  4. 對齊優化(Alignment Optimization):確保索引中的內容與查詢的語義一致,減少不相關信息的干擾。
  5. 混合檢索(Mixed Retrieval):結合多種檢索方法(如密集檢索和稀疏檢索)來提高檢索效果。

2. 查詢優化(Query Optimization):

  1. 查詢重寫(Query Rewriting):重寫用戶的原始查詢,使其更符合檢索任務的需求。
  2. 查詢轉換(Query Transformation):將查詢轉換為更適合檢索的形式。
  3. 查詢擴展(Query Expansion):擴展查詢內容,增加上下文信息以提高檢索的全面性。
  4. 其他技術(Other Techniques):包括子查詢生成、多查詢策略等,以提高檢索的準確性和覆蓋範圍。

2. 後檢索過程(Post-retrieval Process)

在檢索到相關內容後,關鍵是有效地將其整合到查詢中

1. 重排序文檔片段(Rerank Chunks):

  1. 重定位關鍵內容(Relocate Key Content):將最相關的內容重排序,使其在提示中優先呈現。
  2. 應用於不同框架(Frameworks):這一概念已在 LlamaIndex、LangChain 和 HayStack 等框架中實現。

2. 上下文壓縮(Context Compressing):

  1. 選擇關鍵信息(Selecting Essential Information):從檢索結果中選擇關鍵信息,排除不相關內容。
  2. 強調關鍵部分(Emphasizing Critical Sections):強調文檔中的關鍵部分,確保模型能夠聚焦於重要細節。
  3. 縮短處理上下文(Shortening the Context):壓縮上下文長度,避免信息過載,使處理更加高效。

3. Modular RAG

提供了更強的適應性和多樣性。它通過添加新的模塊和重新組織現有模塊來改善檢索和生成過程,以應對具體的挑戰

1. 模塊化架構(Modular Architecture)

模塊化RAG引入了專門的組件來增強檢索和處理能力,這些模塊包括:
https://ithelp.ithome.com.tw/upload/images/20240818/20168537sJ10wUj94a.png

  1. 搜索模塊(Search Module)
    • 用途:適應特定場景,支持在不同數據源(如搜索引擎、數據庫、知識圖譜)中進行直接搜索。
    • 實現:使用LLM生成的代碼和查詢語言進行搜索。
  2. RAG-Fusion
    • 用途:解決傳統搜索的局限性,通過多查詢策略擴展用戶查詢,進行平行向量搜索和智能重排序。
    • 效果:發現顯性和轉換性知識。
  3. 記憶模塊(Memory Module)
    • 用途:利用LLM的記憶來指導檢索,創建無限的記憶池。
    • 實現:通過迭代自我增強來使文本更接近數據分佈。
  4. 路由模塊(Routing Module)
    • 用途:導航不同數據源,選擇最佳查詢路徑,如摘要、特定數據庫搜索或合併不同的信息流。
    • 效果:提高查詢的精確性和效率。
  5. 預測模塊(Predict Module)
    • 用途:通過LLM直接生成上下文,減少冗餘和噪音。
    • 效果:確保上下文的相關性和準確性。
  6. 任務適配器模塊(Task Adapter Module)
    • 用途:針對各種下游任務調整RAG,為零樣本輸入自動檢索提示,通過少樣本查詢生成創建特定任務的檢索器。
    • 效果:顯著提高檢索質量和信息的相關性,適應各種任務和查詢。

2. 新模式(New Patterns)

模塊化RAG允許模塊替換或重新配置,以應對特定挑戰,展示了其顯著的適應性。這超越了Naive RAG和Advanced RAG的固定結構,如“檢索”和“閱讀”機制。

https://ithelp.ithome.com.tw/upload/images/20240818/20168537VNSCNuOdp9.png

  1. 重寫-檢索-閱讀模型(Rewrite-Retrieve-Read)
    • 用途:利用LLM的能力通過重寫模塊和LM反饋機制來更新重寫模型,改進任務性能。
  2. 生成-閱讀模型(Generate-Read)
    • 用途:用LLM生成內容替代傳統檢索。
  3. 背誦-閱讀模型(Recite-Read)
    • 用途:強調從模型權重中檢索,提高處理知識密集型任務的能力。
  4. 混合檢索策略(Hybrid Retrieval Strategies)
    • 用途:結合關鍵字、語義和向量搜索,以應對各種查詢。
  5. 子查詢和假設文檔嵌入(HyDE)
    • 用途:通過關注生成答案與實際文檔之間的嵌入相似性,提高檢索相關性。
  6. 模塊排列和交互的調整(Adjustments in Module Arrangement and Interaction)
    • 示例:展示-搜索-預測(Demonstrate-Search-Predict,DSP)框架和迭代檢索-閱讀-檢索-閱讀(ITER-RETGEN)流程,展示動態使用模塊輸出來增強另一個模塊的功能。

3. 動態檢索流程(Dynamic Retrieval Flow)

模塊化RAG的靈活安排展示了適應性檢索的優勢,如FLARE和Self-RAG技術。這種方法超越了固定的RAG檢索過程,根據不同場景評估檢索的必要性。

  • 集成其他技術:RAG系統可以更容易地與其他技術(如微調或強化學習)集成。例如:
    • 微調檢索器:獲得更好的檢索結果。
    • 微調生成器:生成更個性化的輸出。
    • 協同微調:提高整體性能。

接下來,將會詳細介紹Naive RAG和Advanced RAG的方法&如何實作!


上一篇
Day22 GAI爆炸時代 - Retriever 方法詳細介紹
下一篇
Day24 GAI爆炸時代 - Naive RAG 介紹
系列文
LLM 應用、開發框架、RAG優化及評估方法 26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言